gtk_tests = [
  # testname, optional extra sources
  ['rendernode'],
  ['rendernode-create-tests'],
  ['overlayscroll'],
  ['syncscroll'],
  ['animated-resizing', ['frame-stats.c', 'variable.c']],
  ['animated-revealing', ['frame-stats.c', 'variable.c']],
  ['motion-compression'],
  ['scrolling-performance', ['frame-stats.c', 'variable.c']],
  ['blur-performance', ['../gsk/gskcairoblur.c']],
  ['simple'],
  ['flicker'],
  ['print-editor'],
  ['video-timer', ['variable.c']],
  ['testaccel'],
  ['testadjustsize'],
  ['testappchooser'],
  ['testappchooserbutton'],
  ['testassistant'],
  ['testbaseline'],
  ['testbbox'],
  ['testbox'],
  ['testboxcss'],
  ['testbuttons'],
  ['testcairo'],
  ['testcalendar'],
  ['testclipboard2'],
  ['testcolorchooser'],
  ['testcolorchooser2'],
  ['testcombo'],
  ['testcombochange'],
  ['testcellrenderertext'],
  ['testdialog'],
  ['testdnd'],
  ['testdnd2'],
  ['testellipsise'],
  ['testemblems'],
  ['testentrycompletion'],
  ['testentryicons'],
  ['testfilechooser'],
  ['testfilechooserbutton'],
  ['testflowbox'],
  ['testfontchooser'],
  ['testfontoptions'],
  ['testframe'],
  ['testfullscreen'],
  ['testgiconpixbuf'],
  ['testglarea'],
  ['testglblending', ['gtkgears.c']],
  ['testgrid'],
  ['testgtk'],
  ['testheaderbar'],
  ['testheightforwidth'],
  ['testiconview'],
  ['testiconview-keynav'],
  ['testicontheme'],
  ['testimage'],
  ['testinput'],
  ['testkineticscrolling'],
  ['testlist'],
  ['testlist2'],
  ['testlist3'],
  ['testlevelbar'],
  ['testlockbutton'],
  ['testmenubutton'],
  ['testmountoperation'],
  ['testnotebookdnd'],
  ['testnouiprint'],
  ['testorientable'],
  ['testoverlay'],
  ['testoverlaystyleclass'],
  ['testprint', ['testprintfileoperation.c']],
  ['testrecentchooser'],
  ['testrecentchoosermenu'],
  ['testscale'],
  ['testselectionmode'],
  ['testspinbutton'],
  ['testtoolbar'],
  ['testtoolbar2'],
  ['stresstest-toolbar'],
  ['testtreechanging'],
  ['testtreednd'],
  ['testtreeedit'],
  ['testtreemodel'],
  ['testtreeview'],
  ['testtreefocus'],
  ['testtreeflow'],
  ['testtreecolumns'],
  ['testtreecolumnsizing'],
  ['testtreesort'],
  ['testverticalcells'],
  ['treestoretest'],
  ['testxinerama'],
  ['testgrouping'],
  ['testtooltips'],
  ['testexpand'],
  ['testexpander'],
  ['testvolumebutton'],
  ['testscrolledwindow'],
  ['testscrolledge'],
  ['testcellarea'],
  ['testswitch'],
  ['testtoplevelembed'],
  ['testnoscreen'],
  ['testtreepos'],
  ['testsensitive'],
  ['testtextview'],
  ['testpixbuf-scale'],
  ['testgmenu'],
  ['testlogout'],
  ['teststack'],
  ['testrevealer'],
  ['testrevealer2'],
  ['testtitlebar'],
  ['testsplitheaders'],
  ['teststackedheaders'],
  ['testactionbar'],
  ['testwindowsize'],
  ['testpopover'],
  ['gdkgears', ['gtkgears.c']],
  ['listmodel'],
  ['testpopup'],
  ['testpopupat'],
  ['testgaction'],
  ['testwidgetfocus'],
  ['testcenterbox'],
  ['testgridbaseline'],
  ['showrendernode'],
  ['testborderdrawing'],
  ['testoutsetshadowdrawing'],
]

if os_linux
  gtk_tests += [['testfontchooserdialog']]
endif

if x11_enabled
  gtk_tests += [['testerrors']]
endif

# Pass the source dir here so programs can change into the source directory
# and find .ui files and .png files and such that they load at runtime
test_args = ['-DGTK_SRCDIR="@0@"'.format(meson.current_source_dir())]

foreach t: gtk_tests
  test_name = t.get(0)
  test_srcs = ['@0@.c'.format(test_name), t.get(1, [])]
  executable(test_name, test_srcs,
             include_directories: [confinc, gdkinc],
             c_args: test_args,
             dependencies: [libgtk_dep, libm])
endforeach

subdir('visuals')
